//
//  UIImage+Compress.h
//  my First Love
 

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSInteger, DirectionStyle){
    DirectionStyleToUnder = 0,  //向下
    DirectionStyleToUn = 1      //向上
};

typedef NS_ENUM(NSUInteger, GradientType) {
    GradientTypeTopToBottom = 0,//从上到小
    GradientTypeLeftToRight = 1,//从左到右
    GradientTypeUpleftToLowright = 2,//左上到右下
    GradientTypeUprightToLowleft = 3,//右上到左下
};

@interface UIImage (Compress)

-(UIImage *)compressedImage:(CGSize)size;

-(CGFloat)compressionQuality;

-(NSData *)compressedData;

-(NSData *)compressedData:(CGFloat)compressionQuality;

- (UIImage *)compressShareImage;

/**
 如果要保证图片清晰度，建议选择压缩图片质量。如果要使图片一定小于指定大小，压缩图片尺寸可以满足。
 对于后一种需求，还可以先压缩图片质量，如果已经小于指定大小，就可得到清晰的图片，否则再压缩图片
 
 @param image image
 @param maxLength maxLength
 */
+ (UIImage *)compressImage:(UIImage *)image toByte:(NSUInteger)maxLength;

/**
 *  渐变色
 *  @param red              红色
 *  @param green            绿色
 *  @param blue             蓝色
 *  @param startAlpha       开始的透明度
 *  @param endAlpha         结束的透明度
 *  @param direction        那个方向
 *  @param size            大小
 */
+ (UIImage *)LW_gradientColorWithRed:(CGFloat)red
                               green:(CGFloat)green
                                blue:(CGFloat)blue
                          startAlpha:(CGFloat)startAlpha
                            endAlpha:(CGFloat)endAlpha
                           direction:(DirectionStyle)direction
                                size:(CGSize)size;
//使用方法
//UIColor *topColor = [UIColor redColor];
//UIColor *bottomColor = [UIColor blueColor];
//UIImage *bgImg = [UIImage gradientColorImageFromColors:@[topColor, bottomColor] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(你控件需要的大小)];
//[你的控件  setBackgroundColor:[UIColor colorWithPatternImage:bgImg]];
+ (UIImage *)gradientColorImageFromColors:(NSArray*)colors gradientType:(GradientType)gradientType imgSize:(CGSize)imgSize;

@end
